<template>
  <div class="centent">
    <!-- 顶部功能模块 -->
    <header>
      <i class="iconfont icon-jiantouzuo" @click="withdraw"></i>
      <a :class="flag == 0 ? 'act' : ''" @click="tabSwith(0)" href="#one">
        <i class="iconfont icon-shouhuodizhi"></i>
        商品
      </a>
      <a href="#two" @click="tabSwith(1)" :class="flag == 1 ? 'act' : ''">
        <i class="iconfont icon-shouhuodizhi"></i>
        商品详情
      </a>
      <a @click="tabSwith(2)" :class="flag == 2 ? 'act' : ''" href="#one">
        <i class="iconfont icon-shouhuodizhi"></i>
        商品推荐
      </a>
      <i class="iconfont icon-qita"></i>
    </header>
    <!-- 轮播图 -->
    <div class="swipt" id="one">
      <van-swipe :autoplay="3000">
        <van-swipe-item v-for="(item, index) in swipt" :key="index">
          <img :src="imghttp + item" />
        </van-swipe-item>
      </van-swipe>
    </div>
    <!-- 标题部分 -->
    <div class="tietle">
      <h1>{{ list.name }}</h1>
      <h3>{{ list.subtitle }}</h3>
      <div class="price">
        <span class="priceSpan1">￥{{ list.price }}</span>
        <span class="priceSpan2">库存 {{ list.stock }} 件</span>
      </div>
    </div>
    <!-- 商品详情 -->
    <div class="details" id="two">
      <p></p>
      <ul>
        <li>概述</li>
        <li>参数</li>
        <li>安装服务</li>
        <li>常见问题</li>
      </ul>
      <div id="introduce" v-html="list.detail"></div>
    </div>
    <!-- 底部购买 -->
    <div class="navBut">
      <van-goods-action>
        <van-goods-action-icon icon="chat-o" text="客服" dot />
        <van-goods-action-icon
          icon="cart-o"
          text="购物车"
          to="/shopcart"
          :badge="$store.getters.getBadgeCount"
        />
        <van-goods-action-button
          type="warning"
          text="加入购物车"
          @click="showDOM"
        />
        <van-goods-action-button type="danger" text="立即购买" />
      </van-goods-action>
    </div>
    <!-- 加入购物车，立即购买弹窗 -->
    <van-sku
      v-model="show"
      :sku="sku"
      :goods="goods"
      @buy-clicked="onBuyClicked"
      @add-cart="onAddCartClicked"
    />
  </div>
</template>

<script>
import { productDetail, cartAdd } from "../../api/index";
export default {
  data() {
    return {
      flag: 0,
      list: [],
      swipt: [],
      imgUrl: "",
      imghttp: "",
      images: [],
      // 立即购买
      show: false,
      sku: {
        // 所有sku规格类目与其值的从属关系，比如商品有颜色和尺码两大类规格，颜色下面又有红色和蓝色两个规格值。
        // 可以理解为一个商品可以有多个规格类目，一个规格类目下可以有多个规格值。
        tree: [
          {
            k: "颜色", // skuKeyName：规格类目名称
            k_s: "s1", // skuKeyStr：sku 组合列表（下方 list）中当前类目对应的 key 值，value 值会是从属于当前类目的一个规格值 id
            v: [
              {
                id: "1", // skuValueId：规格值 id
                name: "红色", // skuValueName：规格值名称
                imgUrl: "https://img01.yzcdn.cn/1.jpg", // 规格类目图片，只有第一个规格类目可以定义图片
                previewImgUrl: "https://img01.yzcdn.cn/1p.jpg", // 用于预览显示的规格类目图片
              },
              {
                id: "2",
                name: "蓝色",
                imgUrl: "https://img01.yzcdn.cn/2.jpg",
                previewImgUrl: "https://img01.yzcdn.cn/2p.jpg",
              },
            ],
            largeImageMode: true, //  是否展示大图模式
          },
        ],
        // 所有 sku 的组合列表，比如红色、M 码为一个 sku 组合，红色、S 码为另一个组合
        list: [
          {
            id: 2259, // skuId
            s1: "1", // 规格类目 k_s 为 s1 的对应规格值 id
            s2: "1", // 规格类目 k_s 为 s2 的对应规格值 id
            price: 1000, // 价格（单位分）
            stock_num: 110, // 当前 sku 组合对应的库存
          },
          {
            id: 3359, // skuId
            s1: "2", // 规格类目 k_s 为 s1 的对应规格值 id
            s2: "2", // 规格类目 k_s 为 s2 的对应规格值 id
            price: 100, // 价格（单位分）
            stock_num: 110, // 当前 sku 组合对应的库存
          },
        ],
        price: "1.00", // 默认价格（单位元）
        stock_num: 227, // 商品总库存
        collection_id: 2261, // 无规格商品 skuId 取 collection_id，否则取所选 sku 组合对应的 id
        none_sku: false, // 是否无规格商品
        hide_stock: false, // 是否隐藏剩余库存
      },
      goods: {
        // 默认商品 sku 缩略图
        picture: "https://img01.yzcdn.cn/1.jpg",
      },
    };
  },
  methods: {
    onAddCartClicked(e) {
      // 加入购物车
      let parent = {
        productId: this.$route.query.id,
        count: e.selectedNum + "",
      };
      cartAdd(parent);
    },
    onBuyClicked() {
      // 立即购买预留方法
      console.log("立即购买预留方法激活");
    },
    withdraw() {
      this.$router.push("/product");
    },
    showDOM() {
      this.show = true;
    },
    // 数据渲染接口
    fun() {
      const params = this.$route.query;
      productDetail(params).then((res) => {
        this.list = res;
        this.imghttp = this.list.imageHost;
        this.imgUrl = this.list.subImages;
        if (this.imgUrl !== "" || null) {
          this.swipt = this.imgUrl.split(",");
        }
        this.buy();
      });
    },
    // 顶部tab栏切换
    tabSwith(e) {
      this.flag = e;
    },
    // 购买按钮图片数据截取
    buy() {
      // 商品规格
      let sizeChart = this.sku.tree[0].v;
      sizeChart.forEach((e, index) => {
        e.imgUrl = this.imghttp + this.swipt[index];
        e.previewImgUrl = this.imghttp + this.swipt[index];
        this.goods.picture = this.imghttp + this.swipt[index];
        this.sku.price = this.list.price;
      });
      // 价格改变
      this.sku.list.forEach((e) => {
        e.price = this.list.price * 100;
      });
    },
  },
  created() {
    this.fun();
  },
};
</script>

<style lang="scss" scoped>
header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 80px;
  border-bottom: 1px solid #ccc;
  line-height: 80px;
  text-align: center;
  background-color: white;
  z-index: 9999;
  .icon-jiantouzuo {
    position: absolute;
    left: 15px;
    font-size: 40px;
  }
  a {
    margin: 0 20px;
    font-size: 30px;
    .icon-shouhuodizhi {
      visibility: hidden;
    }
  }
  .icon-qita {
    position: absolute;
    right: 20px;
    font-size: 50px;
  }
  .act {
    color: #f63515;
    .icon-shouhuodizhi {
      color: #f63515;
      font-size: 30px;
      visibility: visible;
    }
  }
}
.swipt {
  margin-top: 80px;
  width: 100%;
  .swipt-item {
    width: 100%;
  }
  img {
    text-align: center;
    width: 100% !important;
    height: 700px;
  }
}
.tietle {
  padding: 15px 25px;
  font-size: 20px;
  background-color: white !important;
  color: #333;
  h1,
  h3 {
    font-weight: 400;
  }

  h3 {
    font-size: 30px;
    color: #999;
  }
}
.price {
  display: flex;
  justify-content: space-between;
  margin-top: 20px;
  .priceSpan1 {
    font-size: 40px;
    color: #f63515;
  }
  .priceSpan2 {
    color: #999;
    font-size: 30px;
    margin-bottom: 20px;
  }
}
.details {
  p {
    height: 30px;
    background-color: #eee;
  }
  ul {
    display: flex;
    text-align: center;
    padding: 15px 0;
    li {
      flex: 1;
      font-size: 30px;
      border-right: 2px solid #ccc;
    }
    li:last-child {
      border-right: transparent;
    }
  }
}

::v-deep #introduce {
  width: 100%;
  overflow: hidden;
  p {
    width: 100%;
    text-align: center;
    font-size: 40px;
    img {
      width: 100%;
      height: 100%;
    }
  }
}

// }
.navBut {
  margin-top: 80px;
}
</style>